package com.pzhu.gmall.manage.service.impl;

import java.util.List;
import java.util.Set;

import com.pzhu.gmall.bean.PmsBaseAttrInfo;
import com.pzhu.gmall.bean.PmsBaseAttrValue;
import com.pzhu.gmall.manage.mapper.PmsBaseAttrInfoMapper;
import com.pzhu.gmall.manage.mapper.PmsBaseAttrValueMapper;
import com.pzhu.gmall.service.AttributeService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Transient;
import tk.mybatis.mapper.entity.Example;

/**
 * @author 刘鹏 liupeng
 * @date 2019/10/30
 **/
@Service
public class AttributeServiceImpl implements AttributeService {
    @Autowired
    private PmsBaseAttrInfoMapper pmsBaseAttrInfoMapper;

    @Autowired
    private PmsBaseAttrValueMapper pmsBaseAttrValueMapper;

    @Override
    public List<PmsBaseAttrInfo> getAttrByCatalog3Id(String catalog3Id) {

        return pmsBaseAttrInfoMapper.selectAttrInfoList(catalog3Id);
    }

    @Override
    @Transient
    public int saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo) {
        String attrInfoId = pmsBaseAttrInfo.getId();
        int result;
        if (attrInfoId != null) {
            result = pmsBaseAttrInfoMapper.updateByPrimaryKey(pmsBaseAttrInfo);
            Example example = new Example(PmsBaseAttrValue.class);
            example.createCriteria().andEqualTo("attrId", attrInfoId);
            pmsBaseAttrValueMapper.deleteByExample(example);
        } else {
            result = pmsBaseAttrInfoMapper.insertSelective(pmsBaseAttrInfo);
        }
        List<PmsBaseAttrValue> pmsBaseAttrValueList = pmsBaseAttrInfo.getAttrValueList();
        for (PmsBaseAttrValue pmsBaseAttrValue : pmsBaseAttrValueList) {
            pmsBaseAttrValue.setAttrId(pmsBaseAttrInfo.getId());
            pmsBaseAttrValueMapper.insertSelective(pmsBaseAttrValue);
        }
        return result;
    }

    @Override
    public List<PmsBaseAttrValue> getPmsBaseAttrValueListByPmsPmsBaseAttrInfoId(String attrId) {
        PmsBaseAttrValue pmsBaseAttrValue = new PmsBaseAttrValue();
        pmsBaseAttrValue.setAttrId(attrId);
        return pmsBaseAttrValueMapper.select(pmsBaseAttrValue);
    }

    @Override
    public List<PmsBaseAttrInfo> getAttrinfoByAttrIdSet(Set<String> attrIdSet) {
        if (attrIdSet == null) {
            return null;
        }
        return pmsBaseAttrInfoMapper.selectbyAttrIdSet(attrIdSet);
    }

    @Override
    public List<PmsBaseAttrInfo> getAttrinfoByValueIdSet(Set<String> valueIdSet) {
        if (valueIdSet == null) {
            return null;
        }
        return pmsBaseAttrInfoMapper.selectByValueIdSet(valueIdSet);
    }
}
